package cn.com.surker.production.service;

import cn.com.surker.production.entity.ProductionTransportPrice;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.com.surker.spring.RestResultDto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Map;

/**
* <p>
    * 生产运输单价表 服务类
    * </p>
*
* @author admin
* @since 2024-12-05
*/
public interface TranPriceService extends IService<ProductionTransportPrice> {

    /**
     * 查询生产合同运输单价信息
     * @param contractId
     * @returnLong contractId
     */
    Map<String, List<ProductionTransportPrice>> findByContract(Long contractId);
    /**
     * 新增生产合同运输单价信息
     * @return
     */
    RestResultDto savePrice(ProductionTransportPrice transportPrice);
    /**
     * 修改运输单价
     * @return
     */
    RestResultDto updatePrice(ProductionTransportPrice transportPrice);

//    /**
//     * 新增生产合同运输单价信息
//     * @param orgId
//     * @param contractId 合同ID
//     * @param supplierId
//     * @param transportType 标号运输类型 0普通混凝土，1砂浆，2站内接水，3，水稳层，4，干喷混凝土，5透水混凝土，6，彩色混凝土，7站外接水
//     * @param price 单价
//     * @param countType 计算方式0:方量1:车次,2:吨位
//     * @param carModel 车辆类型(0:轻量化1:中车2:大车)
//     * @param isSpeed 是否高速(0：非高速，1：高速)
//     * @param isLimit 是否高速(0：非高速，1：高速)
//     * @param minDistance 最小距离
//     * @param maxDistance 最大距离
//     * @param minStere 最小方量
//     * @param maxStere 最大方量
//     * @param takeTime 生效时间
//     * @param remark
//     * @param creator
//     * @return
//     */
//    RestResultDto savePrice(Long orgId, Long contractId, Long supplierId, Integer transportType, Integer countType,
//                         Integer carModel, Integer isSpeed, Integer isLimit,Double minDistance, Double maxDistance,
//                         Double minStere, Double maxStere, Double price, String takeTime, String remark, String creator);
//    /**
//     *
//     * @param id
//     * @param transportType 标号运输类型 0普通混凝土，1砂浆，2站内接水，3，水稳层，4，干喷混凝土，5透水混凝土，6，彩色混凝土，7站外接水
//     * @param price 单价
//     * @param countType 计算方式0:方量1:车次,2:吨位
//     * @param carModel 车辆类型(0:轻量化1:中车2:大车)
//     * @param isSpeed 是否高速(0：非高速，1：高速)
//     * @param isLimit 是否高速(0：非高速，1：高速)
//     * @param minDistance 最小距离
//     * @param maxDistance 最大距离
//     * @param minStere 最小方量
//     * @param maxStere 最大方量
//     * @param takeTime 生效时间
//     * @param remark
//     * @param creator
//     * @return
//     */
//    RestResultDto updatePrice(Long id, Integer transportType, Integer countType,
//                           Integer carModel, Integer isSpeed, Integer isLimit,Double minDistance, Double maxDistance,
//                           Double minStere, Double maxStere, Double price, String takeTime, String remark, String creator);

	/**
	 * 更新运输单价工程信息
	 * @param id
	 * @param contractId
	 * @param creator
	 * @param type 0添加 1删除
	 * @return
	 */
	RestResultDto relatedContract(Long id, Long contractId, String creator, Integer type);

    /**
     * 禁用合同
     * @param id
     * @param status
     * @return
     */
    RestResultDto updateStatus(Long id, Integer status, String creator);

	/**
	 * 查询合同在该运输时刻的单价
	 *
	 * @param tranConId
	 * @param carModel
	 * @param transportType
	 * @param roadType
	 * @param overLimit
	 * @param tranTime
	 * @return
	 */
	ProductionTransportPrice queryTranPrice(Long tranConId, Integer carModel, Integer transportType, Integer countType, Integer roadType, Integer overLimit, Double distance, String tranTime);

	/**
	 * 查询递增价
	 *
	 * @param tranConId
	 * @param carModel
	 * @param invTranType
	 * @param invCountType
	 * @param roadType
	 * @param overLimit
	 * @param tranTime
	 * @return
	 */
	ProductionTransportPrice queryIncrePrice(Long tranConId, Integer carModel, Integer invTranType, Integer invCountType, Integer roadType, Integer overLimit, String tranTime);
}
